package com.yinyue.puremusic.ui.page

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.SeekBar
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.kunminx.player.PlayingInfoManager
import com.sothree.slidinguppanel.SlidingUpPanelLayout
import com.yinyue.puremusic.R
import com.yinyue.puremusic.bridge.state.MainViewModel
import com.yinyue.puremusic.bridge.state.PlayerViewModel
import com.yinyue.puremusic.bridge.state.SearchViewModel
import com.yinyue.puremusic.databinding.FragmentMainBinding
import com.yinyue.puremusic.databinding.FragmentPlayerBinding
import com.yinyue.puremusic.databinding.FragmentSearchBinding
import com.yinyue.puremusic.player.PlayerManager
import com.yinyue.puremusic.ui.base.BaseFragment
import com.yinyue.puremusic.ui.view.PlayerSlideListener
import net.steamcrafted.materialiconlib.MaterialDrawableBuilder

/**
 * 搜索界面 的 Fragment
 * 继承BaseFragment，里面封装了许多方法的
 * getFragmentViewModelProvider：
 *      保证给所有的 子fragment提供的函数，可以顺利的拿到 ViewModel 【非共享区域的ViewModel】
 *      使用了抽象工厂设计模式
 */
class SearchFragment  : BaseFragment(){

    //声明ViewModel与DataBinding变量
    private var binding: FragmentSearchBinding? = null
    private var mSearchViewModel: SearchViewModel? = null // 搜索界面 相关的 VM


    //重写onCreate函数，内部实例化ViewModel变量
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //继承BaseFragment，拿到里面的方法
        mSearchViewModel = getFragmentViewModelProvider(this)
            .get<SearchViewModel>(SearchViewModel::class.java)
    }

    //重写onCreateView函数
    // DataBinding + ViewModel
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?): View {

        // 加载界面
        val view: View = inflater.inflate(R.layout.fragment_search, container, false)
        //没有设置监听
        binding?.click = ClickProxy()
        // 绑定 Binding
        binding = FragmentSearchBinding.bind(view)
        binding?.svm = mSearchViewModel
        return view
    }

    // 观察变化 很多双眼睛
    // 观察到数据的变化，我就变化
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)


    }

    // 内部类的好处，方便获取 当前Fragment的 环境
    /*// 点击事件
    {
        sharedViewModel.closeSlidePanelIfExpanded = true
    }*/
    /**
     * 当我们点击的时候，我们要触发
     */
    inner class ClickProxy {

        /*public void playerMode() {
            PlayerManager.getInstance().changeMode();
        }*/

        fun showPlayList() = showShortToast("最近播放的细节，我没有搞...")

        fun back() {
            Log.d("guai","guai")
            showShortToast("真的怪啊，为什么就是返回不了呢")
            nav().navigateUp() // back键的时候，返回上一个界面
        }
    }
}